home *** CD-ROM | disk | FTP | other *** search
/ The Learning Curve / The Learning Curve (Weird Science, 1996).iso / mathematics / plotters / plot / plot.doc < prev    next >
Text File  |  1991-02-11  |  10KB  |  251 lines

  1.            Amiga Plot V1.3a Joe Martin 7/88  (C)Copyright 1988
  2.  
  3.  
  4.  This program is not public domain. All rights retained. Permision is
  5. granted to freely distribute this program as long as all documentation and
  6. notices remain intact. Charges for such distribution are NOT permitted except
  7. as a nominal disk charge !! 
  8.     
  9.  If you find this program useful, entertaining or educational, please donate
  10. $20 to the author. Source code is available for an additional $20 by sending
  11. check or money order to the address provided below. Donations will encourage
  12. updates and more features.
  13.  
  14. ****************************************************************************
  15.  
  16.  
  17. Amiga Plot is a three dimesional mathematical function plotter.It takes
  18. a function, derived by the user, parses it into a partially compiled form and
  19. then calculates coordinates to be placed in the xyz system. AmigaPlot use
  20. hidden line removal based on a principle known as the painters algorithm. 
  21. Each time AmigaPlot goes to the screen it places a filled polygon. Starting
  22. from the most distant part of the plot it is constantly placing filled
  23. polygons in front of other polygons there by covering the hidden portions of
  24. the plot. Many aspects of the plot are user variable so that almost any
  25. combination of rotations, perspectives, and parameters for any function can
  26. produce infinite results. AmigaPlot is not intended for statistical analysis
  27. and the precision of the plot or its scale are not guaranteed.
  28.    The use of color in the plot can produce very pleasing effects
  29. especially when a feathered pallet is used. The idea of AmigaPlot is to
  30. provide an artistic approach to the sometimes dry subjects of Analytical
  31. Geometry and Trigonometry.
  32.  
  33.  
  34.    AmigaPlot was compiled on the Aztec C Compiler 3.6a
  35.    **** Minimum memory 512K - it uses most of it *****
  36.    ************ 1 or 2 meg recommended **************
  37.  
  38.    Address any questions, comments or bugs to:
  39.  
  40.       Joe Martin
  41.       Hobbit Hole  1-904-243-6219 8N1
  42.  
  43.          or
  44.       
  45.       Joe Martin
  46.       2702 Willow Grove Ln.
  47.       Ft. Walton Bch. Fl 32548
  48.  
  49. ****************************************************************************
  50.  
  51. known bugs:
  52.  
  53.    1-some functions can produce values out of range.
  54.    2-extreme values can burden the Amiga clipping routines by requiring 
  55.         more chip memory than is available ! 
  56.         (I've tried to help them out a little)
  57.    3-Rotations approaching 90 degrees will give distorted results(not 
  58.         really a bug)
  59.    I'm working on better error checking but it'll be slow to come.
  60.    The Parser does very little error checking right now so watch your
  61.       spelling on trig function names.
  62.  
  63. ****************************************************************************
  64.  
  65. 1.3a 
  66.     -Fixed bug in file requestor that didn't follow paths correctly.
  67.     -Loads in special Images for windows etc.(3.6a would have booted me out 
  68.      of small data otherwise.
  69.     -User friendly rotation parms(degrees) and smoothing parms(xincr and
  70.         yincr).
  71.         
  72. ****************************************************************************
  73.  
  74. 1.3 additions:
  75.  
  76.     1- save/load parameters and IFF support.
  77.     2- macro capability in function window.
  78.     3- sample functions(parms directory).
  79.     4- increased color span resolution to include floating point.
  80.     5- cosmetic window update.
  81.  
  82. Let's get to it !
  83.  
  84. ********** First MAKE SURE YOUR STACK IS SET TO AT LEAST 20000 *************
  85.  
  86. AmigaPlot is initialized at the CLI by 'Run Plot' (don't forget to set stack
  87.                      20000 first !)
  88.  
  89.     For convenience, the directory 'parms' is included and includes numerous
  90. function examples. These can be loaded from the 'Files' menu and make it
  91. extremely easy to play with and to alter different functions known to yield
  92. satisfatory results.
  93.   Also the directory 'pic' is included with one example of an Iff pic. This
  94. picture can be viewed with any showiff program.
  95.                             
  96. Three windows appear-
  97.    1- AmigaPlot window - for the plots.
  98.    2- Parms window     - gadgets to select and change parameters.
  99.    3- Function window  - for function input only.
  100.  
  101. There are three menus available for some parmameter changes, color etc.
  102.  
  103. Parms Window:
  104.  
  105. Gadgets: 
  106.    Start   starts plot
  107.  
  108.    Stop     stops plot in progress. Any parameter changes will go
  109.           into effect when the plot is restarted.
  110.  
  111.    YRot   changes perspective about the Y axis. range -90 - 90 degrees
  112.    XRot   changes perspective about the X axis. range -90 - 90 degrees 
  113.  
  114.    Object  changes depth perspective in conjuction with Image
  115.       distance from viewer to object
  116.    Image   changes depth perspective in conjuction with Object
  117.       distance from viewer to Image
  118.    
  119.    XRan   This number represents the the outside dimensions of the loop
  120.       which will provide a value for the 'X' variable in the func-
  121.                 tion. Ex XRan: 10 means a loop from -10 to 10
  122.    YRan    Dimensions the loop for the Y variable in the function
  123.  
  124.     Suggested ranges are from 25 down to 5. 
  125.  
  126.    XIncr   the step increment for the XRan loop 1 - 8
  127.    YIncr   the step increment for the YRan loop 1 - 8
  128.  
  129. Adjusting the X and Y increments will give the plot a smooth or jagged
  130. appearence on most plots. Smaller increments take a lot longer to plot(much
  131. more computing), but produce better pictures. '1' is smoothest, '8' coarsest.
  132.  
  133.    XTrans   this moves the center of the plot about the X axis
  134.    YTrans   this moves the center of the plot about the Y axis
  135.  
  136.    ScX   this will adjust the width of the plot by the Scale factor
  137.    ScY   this will adjust the height of the plot by the Scale factor
  138.  
  139.  
  140. Function Gadgets:
  141.  
  142. There are 3 string gadgets available for function input:
  143.  
  144.     f(x,y): this gadget is for entry of main function. Upper and lower case 
  145.             is acceptable. Any operators, grouping sysbols, or trig function
  146.             names given below are acceptable.   
  147.  
  148.             Legal variable names : X,Y,A,B
  149.             
  150.     A=    : this gadget is useful for subfunctions and expressions and serves
  151.             as a macro for the main function f(x,y). If your main
  152.             function(f(x,y)) contains the 'A' variable, then this macro MUST
  153.             be defined in this gadget !
  154.             
  155.     B=    : this gadget is useful for subfunctions and expressions and serves
  156.             as a macro for the main function f(x,y). If your main
  157.             function(f(x,y)) contains the 'B' variable, then this macro MUST
  158.             be defined in this gadget !
  159.             
  160.    Editing : same as for any string gadget - cursor keys, del, backSp 
  161.                   etc.
  162.  
  163.    operations :     +,-,*,/ divsion by zero is trapped.
  164.                  ^ to the power of
  165.                     
  166.     grouping   :    ()
  167.     
  168.    functions  :   ABS() absolute value of
  169.                  SQRT() Square root of
  170.                  SQR() Square of
  171.                  SIN() Sine of
  172.                  ASIN() ArcSine of
  173.                  COS() Cosine of
  174.                  ACOS() ArcCosine of
  175.                  TAN() Tangent of
  176.                  ATAN() Arctangent of
  177.                  LN()  Natural Logarithm of
  178.                  LOG() Base 10 Log of
  179.                  EXP() Exponential of
  180.  
  181. Menus:
  182.  
  183. File Menu    
  184.  
  185.  Quit -           Quit AmigaPlot (bye)
  186.  save
  187.     parms -     this will save all parameters for easy retrieval. A file
  188.                 requestor will prompt you for the file name. File name
  189.                 extensions of '.parms' are recommended.. 
  190.                 
  191.     IFF -       this will save the current visible screen to an IFF format
  192.                 image. A file requestor will prompt you for the file name and
  193.                 extensions of '.pic' are recommended.
  194.  
  195.  load
  196.     parms-      this will load a set of parameters, functions, window sizes,
  197.                 color map etc. When plot is first run 'Default.parms' is
  198.                 loaded if available. If you have a favorite function. then it
  199.                 can be loaded at startup by saving its' parms as
  200.                 'Default.parms'.
  201.                 
  202. Parameters Menu -    Same as the Parms gadgets(just for convience)
  203.  
  204. Display Menu -    
  205.  
  206.  Color Map - User selects color palette
  207.  
  208.  ColorSpan - User selects color position/span(what heigth you want each color
  209.           to kick in. Decimal fractions can be entered for 
  210.                         finer color resolution.
  211.              
  212.  XHatch -    Outlines complete polygon on screen
  213.  
  214.  Spec.Parms -    Two gadgets:
  215.  
  216.      Clip TAN - This is an adjustment for the TAN function which usually 
  217.          produces very high values(out off range). You can
  218.          adjust the tops of these spikes.
  219.             
  220.    Scale/0  - This one can adjust any case of division by zero. In other
  221.       words, instead of dividing by zero(which is undefined)
  222.       you can divide by the scale value.
  223.  
  224.    
  225. ****************************************************************************
  226.  
  227.    Here are some sample functions :
  228.  
  229. 1) COS((X^2+Y^2)/10)
  230.    Object:50   Image:650     XRange:10   YRange:10   XYIncr:.5
  231.  
  232. 2) 2*SIN((X^2-Y^2)/10)
  233.    Object:50   Image:650     XRange:10   YRange:10   XYIncr:.5
  234.  
  235. 3) .005*((X/Y)^2-(Y/X)^2)
  236.    Object:50   Image:650     XRange:10   YRange:10   XYIncr:.5
  237.  
  238. 4) 3*SIN(-.05*(X^2-Y^2))-2*COS(.1*(X^2+Y^2))
  239.    Object:50   Image:650     XRange:10   YRange:10   XYIncr:.5
  240.  
  241. 5) 4*(5*EXP(-(X^2+Y^2)/60)*SIN((X^2-Y^2)/10))
  242.    Object:130   Image:750     XRange:20   YRange:20   XYIncr:.5
  243.  
  244. 6) TAN((X^2+Y^2)/50)
  245.    Object:80   Image:750     XRange:12   YRange:12   XYIncr:.5
  246.  
  247.  
  248.       **** Have Fun ****
  249.  
  250. ****************************************************************************
  251.